const webpack = require('webpack')
//const CompressionWebpackPlugin = require("compression-webpack-plugin");
// 导入compression-webpack-plugin
//const CompressionWebpackPlugin = require('compression-webpack-plugin')
// 定义压缩文件类型
//const productionGzipExtensions = ['js', 'css']
module.exports={
    publicPath:'/',//配置根目录
    outputDir:'dist',//构建输出目录
    assetsDir:"assets",//静态资源目录（js,css,image）
    lintOnSave:false, //是否开启eslint检测,false不开启，有效值：true || false
    productionSourceMap: false,//生成环境下面开启sourceMap支持断点调试
    devServer:{
        open:true, //是否启动打开浏览器
        host:"0.0.0.0",//主机，0.0.0.0支持局域网地址，可以用真机测试
        port:8080, //端口
        https:false,//是否启动https
        //配置跨域代理http,https
        proxy:{
            "/rest":{
                   target:"http://43.255.29.83:8081/rest",//20240101653376  测试服务器
              //  target:"http://184.168.122.55:8890/rest",//线上 /
                // target:"http://rest.trueandpeace.com/rest",//线上 /http://rest.trueandpeace.com/cardlndex
                // target:"http://www.codingcz.cn/rest",//生产库
                // target:"http://148.72.245.217:2002/rest",//正式库
                //  target:"http://184.168.122.55:8890/rest",
                //target:"http://148.72.245.217/rest",//新 2022129810176 198952 永亮
                /*************/
                //http://148.72.245.217:9877/user/index 旧版餐厅地址
                changeOrigin:true,
                pathRewrite:{
                    '^/rest':""
                }
            }
        },
        // proxy:{
        //     "/api":{
        //         target:"http://vueshop.glbuys.com/api",
        //         changeOrigin:true,
        //         pathRewrite:{
        //             '^/api':""
        //         }
        //     }
        // },
    },
    // configureWebpack: config => {
    //     //config.name = name
    //     //config.resolve.alias['@'] = resolve('src')
    //     config.performance = {
    //         hints: 'warning',
    //         //入口起点的最大体积 整数类型（以字节为单位）
    //         maxEntrypointSize: 50000000,
    //         //生成文件的最大体积 整数类型（以字节为单位 300k）
    //         maxAssetSize: 30000000,
    //         //只给出 js 文件的性能提示
    //         assetFilter: function(assetFilename) {
    //             return assetFilename.endsWith('.js')
    //         }
    //     }
    //     if (process.env.NODE_ENV !== 'development') {
    //         // 生产环境
    //         // 编译时删除console.log
    //         config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
    //         //  配置productionGzip-高级的方式
    //         // 配置参数详解
    //         // asset： 目标资源名称。 [file] 会被替换成原始资源。[path] 会被替换成原始资源的路径， [query] 会被替换成查询字符串。默认值是 "[path].gz[query]"。
    //         // algorithm： 可以是 function(buf, callback) 或者字符串。对于字符串来说依照 zlib 的算法(或者 zopfli 的算法)。默认值是 "gzip"。
    //         // test： 所有匹配该正则的资源都会被处理。默认值是全部资源。
    //         // threshold： 只有大小大于该值的资源会被处理。单位是 bytes。默认值是 0。
    //         // minRatio： 只有压缩率小于这个值的资源才会被处理。默认值是 0.8。
    //         config.plugins.push(
    //             new CompressionWebpackPlugin({
    //                 filename: '[path].gz[query]',
    //                 algorithm: 'gzip',
    //                 test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
    //                 threshold: 10240,
    //                 minRatio: 0.8,
    //                 // 是否删除原文件
    //                 deleteOriginalAssets: true,
    //             })
    //         )
    //     } else {
    //         // 开发环境
    //     }
    // },
    // configureWebpack:{
    //     devtool: 'source-map' //配置开发者环境的sourceMap用于断点调试
    // },
    chainWebpack: config => {
        const CompressionWebpackPlugin = require('compression-webpack-plugin')
        if (process.env.NODE_ENV === 'production') {
            config.plugin('CompressionPlugin').use(
                new CompressionWebpackPlugin({
                    test: /\.(js|css)$/,
                    threshold: 10240, // 超过10kb的文件就压缩
                    deleteOriginalAssets:false, // 删除压缩后的源文件
                    minRatio: 0.8
                })
            )
        }
        config.plugin('provide').use(webpack.ProvidePlugin, [{
            $: 'jquery',
            jquery: 'jquery',
            jQuery: 'jquery',
            'window.jQuery': 'jquery'
        }])
    },
};